<template>
  <view :style="[customStyle]">
    <u-tabs v-bind="$attrs" v-model="current" :list="list"/>
    <template v-for="(item, index) in list" :key="item.key">
      <view v-show="modelValue === index" class="tabs-content-item">
        <slot :name="item.key"></slot>
      </view>
    </template>
  </view>
</template>

<script>
import mpConfig from "../../libs/mixin/mp-vertual-node";
/**
 * tabs 标签
 * @description 该组件，是一个tabs标签组件，在标签多的时候，可以配置为左右滑动，标签少的时候，可以禁止滑动。 该组件的一个特点是配置为滚动模式时，激活的tab会自动移动到组件的中间位置。
 * @tutorial https://www.uviewui.com/components/tabs.html
 * @property {Boolean} is-scroll tabs是否可以左右拖动（默认true）
 * @property {Array} list 标签数组，元素为对象，如[{name: '推荐'}]
 * @property {String Number} current 指定哪个tab为激活状态（默认0）
 * @property {String Number} height 导航栏的高度，单位rpx（默认80）
 * @property {String Number} font-size tab文字大小，单位rpx（默认30）
 * @property {String Number} duration 滑块移动一次所需的时间，单位秒（默认0.5）
 * @property {String} active-color 滑块和激活tab文字的颜色（默认#2979ff）
 * @property {String} inactive-color tabs文字颜色（默认#303133）
 * @property {String Number} bar-width 滑块宽度，单位rpx（默认40）
 * @property {Object} active-item-style 活动tabs item的样式，对象形式
 * @property {Object} bar-style 底部滑块的样式，对象形式
 * @property {Boolean} show-bar 是否显示底部的滑块（默认true）
 * @property {String Number} bar-height 滑块高度，单位rpx（默认6）
 * @property {String Number} item-width 标签的宽度（默认auto）
 * @property {String Number} gutter 单个tab标签的左右内边距之和，单位rpx（默认40）
 * @property {String} bg-color tabs导航栏的背景颜色（默认#ffffff）
 * @property {String} name 组件内部读取的list参数中的属性名（tab名称），见官网说明（默认name）
 * @property {String} count 组件内部读取的list参数中的属性名（badge徽标数），同name属性的使用，见官网说明（默认count）
 * @property {Array} offset 设置badge徽标数的位置偏移，格式为 [x, y]，也即设置的为top和right的值，单位rpx（默认[5, 20]）
 * @property {Boolean} bold 激活选项的字体是否加粗（默认true）
 * @event {Function} change 点击标签时触发
 */
export default {
		name: 'u-tabs-content',
    options: mpConfig,
		props: {
				modelValue: {
						type: [Number, String],
						default: 0
				},
				//需循环的标签列表
				list: {
						type: Array,
						default() {
								return []
						}
				},
		},
		emits: ['update:modelValue', 'change'],
		data() {
				return {
						current: this.modelValue
				}
		},
		watch: {
				modelValue: {
						handler(newVal) {
								this.current = newVal
						}
				},
				current: {
						handler(newVal) {
								this.$emit('change', newVal)
								this.$emit('update:modelValue', newVal)
						}
				}
		}
}
</script>

<style lang="scss" scoped>
.tabs-content-item {
		min-height: 60px;
		border-top: 1px solid #ccc;
		background-color: #fff;
}
</style>
